//面向对象思想

/**
 * DBcrud 构造函数 创建对象的时候执行的函数
 * @param {[object]} pool  数据库连接池
 * @param {[string]} table 表名
 */
var DBcrud = function(pool,table){
	this.pool = pool; 		//数据库连接池
	this.table = table; 	//创建对象的时候给定表名
	this.where = '';		//条件 例如 (where id = ?)
	this.filed = '';  		//字段
	this.value = ''; 		//根据字段的个数,天对应的 '?',做预处理
	this.updateFiled = '';  //键值对 (key1=?,key2=? ....)
}


/**
 * 对数据库的增删改查
 * @type {Object}
 */
DBcrud.prototype = {//在原型里面添加方法
	
	/**
	 * 获取mysql的pool连接池,以回调的方式处理
	 * @param  {[string]}   sql      [sql语句]
	 * @param  {[array]}   arr      [需要传入sql预处理的'?',以数组的形式传入]
	 * @param  {Function} callback [回调函数]
	 * @return 无返回值
	 */
	connection : function(sql,arr,callback){
		this.pool.getConnection(function(err,connection){
			if (err) {
				callback(true);
				return;
			}
			//获取成功后,执行query
			connection.query(sql,arr,function(err,results){
				if (err) {
					callback(true);
					return;
				}
				callback(false,results);
			});

			connection.end();
		});
	},

	/**
	 * [select查询]
	 * @param  {Array}    arr      [需要传入sql预处理的'?',以数组的形式传入]
	 * @param  {Function} callback [回调函数]
	 * @return 无返回值
	 */
	select : function(arr,callback){
		//拼接sql语句
		var sql = "SELECT * FROM "+ this.table + this.where;
		this.connection(sql,arr,callback);

	},

	/**
	 * [insert添加数据]
	 * @param  {Array}    arr      [需要传入sql预处理的'?',以数组的形式传入]
	 * @param  {Function} callback [回调函数]
	 * @return 无返回值
	 */
	insert : function(arr,callback){
		var sql = "INSERT INTO " + this.table + "(" + this.filed+ ") " + this.value;
		this.connection(sql,arr,callback);
	},
	
	/**
	 * [delete删除数据]
	 * @param  {Array}    arr      [需要传入sql预处理的'?',以数组的形式传入]
	 * @param  {Function} callback [回调函数]
	 * @return 无返回值
	 */
	delete : function(arr,callback){
		var sql = "DELETE FROM " + this.table + this.where;
		this.connection(sql,arr,callback);
	},
	/**
	 * [update更改数据]
	 * @param  {Array}    arr      [需要传入sql预处理的'?',以数组的形式传入]
	 * @param  {Function} callback [回调函数]
	 * @return 无返回值
	 */
	update : function(arr,callback){
		var sql = "update " + this.table + " set " + this.updateFiled + this.where;
		this.connection(sql,arr,callback);
	}

}

//导出一个DBcrud类的模型
exports.DBcrud = DBcrud;



